目錄服務(Directory)係身份安全的基礎架構,
所有的身份帳號都存於目錄服務當中提供各式系統存取,
目錄服務通常會有幾個核心元件:
像是 Microsoft Active Directory 即為微軟預設的目錄服務,
EntraID 則為整合雲、地端的現代目錄服務解決方案,
或是 IBM Verify Directory 則為 AIX 作業系統預設目錄服務等等。
目錄(Directory)係採用分層結構排列的資訊集合,
提供資料儲存庫,使用戶或應用程式能找到特定所需的資源定位,
當系統或管理者如果知道物件名稱,就可以檢索其身份目錄特徵,
如果事前不知道物件名稱,則可以在目錄中按照階層來搜尋目錄。
目錄服務內部通常具備資料儲存庫或資料庫,
跟一般關聯式資料庫運作情境不同的是,
目錄服務的運作特徵,通常存取(讀取或搜尋)頻率會遠高於更新(寫入),
也因此目錄為了支援大量讀取請求,通常也會對讀取部分做最佳化,
讓更經濟地的方式讓目錄資料查找能力提升。
目錄服務可以是集中式,也可以是分散式架構,
如果目錄是集中式的,則會有一個目錄伺服器提供目錄存取;
如果目錄是分散式的,則有多個伺服器(有時是分散在不同地理區域)提供目錄存取。
目錄服務除提供身份資訊查找外,
也提供可擴展的目錄模式,以及支援 LDAP 協議的 CRUD 操作。
通過 LDAP 協議,管理員可以定義新的身份屬性物件,
也可以對目錄模式進行資訊更改,並且在過程確保一致性的檢查。
目錄本身可能不直接提供底層的安全功能,
因此需要搭配額外的安全措施來保護目錄服務安全。
例如首先需要驗證當入目錄服務的使用者的身份,
驗證使用者是否是其宣稱的合法用戶,同時當使用者通過身份驗證後,
必須確定他們具有對特定物件執行請求的操作的授權或權限。
在目錄服務的權限控管,通常係通過存取控制清單 (ACL),
讓 ACL 條件可以附加到目錄中的物件和屬性授權清單,
進而可以允許或拒絕每個使用者或一組使用者對目錄物件的存取操作行為。
最後,目錄中每個物件資訊都會有一個專有名稱 (DN),
DN 是唯一標識目錄物件的的專屬名稱,
透過一個或多個 "attribute=value" 組成,例如:
"cn=Bill Lin,ou=writer,o=Taiwan,c= TW"
CN commonName
O organizationName
OU organizationalUnitName
C countryName
目錄服務裡定義的任何屬性基本上都可以用來組成 DN,
因為目錄服務係採用階層結構組成,屬性/值的順序很重要。
從最上層的根到指定物件所在層級的目錄層次結構每一層都包含一個元件,
通過 LDAP DN 以最特定的屬性(通常是某種識別名稱)開始,
逐漸擴展到更多的屬性,通常到國家/地區的屬性作結尾,
通過 DN 與階層結構的組成,使各系統存取指定身份物件時,
都能夠按照邏輯、次序、結構的方式快速搜尋、查找到指定身份物件。
目錄服務是身份系統的基石,
也是無論運行哪種解決方案會有的基本共通特性。
所有針對身份安全相關的措施,都離不開最底層的身份目錄,
通過滿足可用性、機敏性與完整性的 C.I.A 原則達到實際的身份安全。